
#ifndef CUBE_H
#define CUBE_H 

//Mac OS 10.5 OpenGL Libraries
//#include <GLUT/glut.h>

#include <cstdlib>
#include <iostream>

//Windows/Linux OpenGL Libraries
#include <GL/glut.h>
#include "../ShapeNode.h"

//ImageMagick Headers
#include <Magick++.h>

using namespace scenegraph;

namespace shapes
{
	class Cube : public ShapeNode
	{
		float width;
		float height;
		float depth;
		float axis[3];
		float alignAngle;
		GLUquadricObj *quadric;
		// Number of texture objects
		int textureCount;
		// Current texture object ID
		GLint currentTexture;
		// Texture objects		
		static GLuint textureObjects[1];
		bool closed;

	private:
		void renderCube();

	public:
		bool textured;

		Cube();
		Cube(int ARGBvalues);
		Cube(float width, float height, float depth, int ARGBvalues);
		Cube( Cube& cube );
		~Cube();
		Cube& operator=( Cube& cube );
		inline void setWidth ( float width );
		inline void setHeight( float height );
		inline void setDepth ( float depth );
		void draw();
		void setTexture(char *fileName);
	};

	void Cube::setWidth( float _width ){
		width = _width;
	}

	void Cube::setHeight( float _height ){
		height = _height;
	}

	void Cube::setDepth( float _depth ){
		depth = _depth;
	}
}
#endif